home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Just Call Me Internet
/
Just Call Me Internet.iso
/
prog
/
atari
/
m2
/
cat3src
/
cat
/
msglistb.d
< prev
next >
Wrap
Text File
|
1997-10-26
|
9KB
|
240 lines
DEFINITION MODULE MsgListBase;
FROM SYSTEM IMPORT ADDRESS;
IMPORT Lists;
IMPORT GrafBase;
IMPORT mtUtils;
IMPORT grin;
IMPORT data;
IMPORT CatTypes;
IMPORT handlePool;
CONST
maxParts = 12; (* Anzahl der maximalen verschiedenen Zeilenteile *)
partFormatLength = 32; (* maximale Lnge eines Formatstrings *)
(* Einzelne Bits in flags *)
Selected = 0;
inTree = 1;
notRead = 2;
doRedraw = 3;
firstRead = 4;
initRead = 5;
TYPE
lEntry = RECORD
msgNum : CARDINAL;
flags : BITSET;
strPtr : CatTypes.Str1023Ptr;
END;
listEntry = RECORD
msgNum : CARDINAL;
flags : BITSET;
CASE: INTEGER OF
0: strPtr : CatTypes.Str1023Ptr; |
1: treeNum : LONGCARD; |
END;
END;
listEntryPtr = POINTER TO listEntry;
listArray = ARRAY [0..$FFFF] OF listEntry;
listArrayPtr = POINTER TO listArray;
partNameType = (pUserName, pRealName, pMailId, pRefId, pWegen, pStatus,
pDatum, pComments, pFlags, pCount, pMId, pOwnMess,
pLength, pTime, pWeekday, pFuzzytime);
partFormat = ARRAY [0..partFormatLength-1] OF CHAR;
partType = RECORD
type : partNameType;
w : INTEGER;
formatStr : partFormat;
END;
partArrayType = ARRAY [0..maxParts-1] OF partType;
partArrayDesc = RECORD
lines : INTEGER;
width : INTEGER;
parts : partArrayType;
END;
listWindow = RECORD
wdw : INTEGER; (* Windowhandle *)
vdi : INTEGER; (* VDI-Handle *)
isHidden : BOOLEAN; (* Window is hidden *)
isLocked : BOOLEAN; (* Redraw wird nicht ausgefhrt! *)
wholeList : listArrayPtr; (* Array mit allen Listeneintrgen *)
list : listArrayPtr; (* Array der Listeneintrge *)
butWork, (* Rechteck des Objektbaumes *)
listWork : GrafBase.Rectangle; (* Workrectangle des Fensters *)
number : INTEGER; (* Nummer des Fensters im Modul *)
font,
fontSize : INTEGER; (* Font & Gre *)
startPos : CARDINAL; (* aktuelle Top-Position *)
maxPos : CARDINAL; (* Anzahl der Messages in der Gruppe *)
leftOffset : INTEGER;
maxWidth : INTEGER;
unreadOrNew : BOOLEAN;
grHandle : handlePool.oneHandlePtr; (* Gruppenhandle *)
grName : ARRAY [0..255] OF CHAR; (* Gruppenname fr Titelzeile *)
charHeight, (* Zeichensatzvariablen *)
charWidth : INTEGER;
isFSM : BOOLEAN;
monoSpaced : BOOLEAN;
usedByGrin : INTEGER;
openMode : grin.openMode;
grinWindow : INTEGER; (* Wenn >= 0, dann wurde es von grin aus aufgerufen *)
partArray : partArrayDesc; (* Aufbau der einzelnen Zeilen *)
(* Neu fr Cursor-Control *)
cursPos : LONGINT; (* Indexnummer fr Cursor; -1 : Nicht sichtbar *)
entryWidth : INTEGER; (* Breite in Pixeln einer Zeile *)
windLines : INTEGER; (* Zeilen im Fenster *)
(* Fr Drag & Drop *)
currentExt : INTEGER;
dataSize : LONGCARD;
END;
listWdwPtr = POINTER TO listWindow;
TYPE sortType = (sVon, sWegen, sTree, sNum, sSize, sDate);
VAR windows : Lists.List;
lineDist : INTEGER;
pixOffset : INTEGER;
privateParts : partArrayDesc;
globalParts : partArrayDesc;
ownEff : BITSET;
quoteEff : BITSET;
lastSaveMode : INTEGER;
extendedCommentMode : BOOLEAN;
globalNumber : INTEGER;
(* Objektbume *)
butBox : mtUtils.tObjcTree;
selPop : mtUtils.tObjcTree;
removePop: mtUtils.tObjcTree;
sortPop : mtUtils.tObjcTree;
PROCEDURE FindNum () : INTEGER;
PROCEDURE ClearNum (num : INTEGER);
(*$Z-*)
PROCEDURE FindWinCond(e, i : ADDRESS):BOOLEAN;
(* Abbruchprozedur, wie in <Lists> gefordert *)
PROCEDURE FindHandleCond(e, i : ADDRESS):BOOLEAN;
PROCEDURE FindGroupCond (e, i : ADDRESS): BOOLEAN;
(*$Z=*)
PROCEDURE findMsgIdx (ptr : listWdwPtr; which: CARDINAL; VAR idx : CARDINAL);
PROCEDURE FindNextSelected (ptr : listWdwPtr; which : CARDINAL) : CARDINAL;
PROCEDURE FindPrevSelected (ptr : listWdwPtr; which : CARDINAL) : CARDINAL;
PROCEDURE FindNextDeselected (ptr : listWdwPtr; which : CARDINAL) : CARDINAL;
PROCEDURE FindPrevDeselected (ptr : listWdwPtr; which : CARDINAL) : CARDINAL;
PROCEDURE listNextMess (which : CARDINAL; nextJN, withShift: BOOLEAN; listHdl: LONGCARD; wdw : ADDRESS):CARDINAL;
PROCEDURE hasSelectedEntries (ptr : listWdwPtr; VAR first : CARDINAL): BOOLEAN;
PROCEDURE countSelectedEntries (ptr : listWdwPtr) : CARDINAL;
PROCEDURE toggleBit (VAR s : BITSET; bit: INTEGER);
PROCEDURE redrawEntry (ptr : listWdwPtr; entry: CARDINAL);
PROCEDURE toggleEntry (ptr : listWdwPtr; entry: CARDINAL);
PROCEDURE invertSelection (ptr: listWdwPtr);
PROCEDURE deselectEntries (ptr : listWdwPtr);
PROCEDURE deselectReadEntries (ptr : listWdwPtr);
PROCEDURE drawCursor (ptr: listWdwPtr);
PROCEDURE ShowCursor (ptr : listWdwPtr);
PROCEDURE AdjustTreePos (r: GrafBase.Rectangle; VAR rt : GrafBase.Rectangle);
PROCEDURE GetLinePart (ptr: listWdwPtr; num : CARDINAL; VAR mess : data.MessageType;
VAR line : ARRAY OF CHAR; type : partType);
PROCEDURE shrinkToEnd (ptr: listWdwPtr; doRedraw: BOOLEAN);
PROCEDURE shrinkList (ptr: listWdwPtr; removeSel : BOOLEAN; doRedraw: BOOLEAN): BOOLEAN;
PROCEDURE showAll (ptr : listWdwPtr);
PROCEDURE selectTree (ptr: listWdwPtr; doRedraw: BOOLEAN);
PROCEDURE selectFromTop (ptr: listWdwPtr);
PROCEDURE removeTree (ptr: listWdwPtr);
PROCEDURE listSelectFiltered(wdw : INTEGER; doSelect: BOOLEAN; doRedraw: BOOLEAN);
PROCEDURE openSelected (ptr : listWdwPtr; doNotTop: BOOLEAN; withCtrl : BOOLEAN);
PROCEDURE freeList (ptr : listWdwPtr);
PROCEDURE doSort(VAR ptr : listWdwPtr; sort: sortType; withRedraw: BOOLEAN);
PROCEDURE doMark(ptr : listWdwPtr; withDial: BOOLEAN);
PROCEDURE redrawButton (wdw: INTEGER; butBox: mtUtils.tObjcTree; ob: INTEGER);
PROCEDURE careForSelected (ptr: listWdwPtr; redraw: BOOLEAN);
PROCEDURE drawListWdw (wdw, vdiH : INTEGER; special : ADDRESS; frame : GrafBase.Rectangle);
PROCEDURE checkPopups(selected: CARDINAL);
PROCEDURE handleButtons (ptr : listWdwPtr; ob : INTEGER; kstate: BITSET) : BOOLEAN;
PROCEDURE clickInListWindow(win, vdiH : INTEGER; special : ADDRESS; x,y : INTEGER; kstate : BITSET; buts: BITSET; clicks : INTEGER): BOOLEAN;
PROCEDURE handleListTimer (wdw, vdiH : INTEGER; special : ADDRESS): BOOLEAN;
PROCEDURE handleListKey (wdw, vdiH : INTEGER; special : ADDRESS; taste: INTEGER; char, scan : CHAR; kstate : BITSET) : BOOLEAN;
PROCEDURE getListScroll (wdw, vdiH : INTEGER; special : ADDRESS; VAR work : GrafBase.Rectangle);
PROCEDURE closeListWindow (wdw, vdiH : INTEGER; special : ADDRESS; force : BOOLEAN) : BOOLEAN;
PROCEDURE topListWdw (wdw, vdiH : INTEGER; special : ADDRESS) : BOOLEAN;
PROCEDURE untopListWdw (wdw, vdiH : INTEGER; special : ADDRESS);
PROCEDURE updateListWdw (wdw, vdiH : INTEGER; special : ADDRESS; update : BOOLEAN);
PROCEDURE hideListWdw (wdw, vdiH : INTEGER; special : ADDRESS; hide : BOOLEAN);
PROCEDURE setListWork (wdw, vdiH : INTEGER; special : ADDRESS; doc : GrafBase.LongRect; slided : BOOLEAN);
PROCEDURE snapListWdw (wdw, vdiH : INTEGER; special : ADDRESS; VAR work : GrafBase.Rectangle);
PROCEDURE listGetSelectedSize (ptr: listWdwPtr; VAR size: LONGCARD);
PROCEDURE listGetSelectedData (ptr: listWdwPtr; VAR adr: ADDRESS);
PROCEDURE listGetHeader (wdw: INTEGER; special: ADDRESS; mode: INTEGER;
VAR ext, name : ARRAY OF CHAR; VAR size: LONGCARD): BOOLEAN;
PROCEDURE listReadData (wdw: INTEGER; special: ADDRESS; VAR data: ADDRESS);
PROCEDURE MakeTitle (gruppe: CARDINAL; VAR title: ARRAY OF CHAR);
END MsgListBase.